Back to Index Page generated: Dec 20, 2024, 7:22:09 AM

Expansion DTT Snake Charmer

Content

Warnings

  1. No version in dependency reference to DTT.Snake Charmer Pinup 1.1.Paradox:null
  2. Conflict Expansions mismatch between OXP Manifest and Expansion Manager at character position 0069 (DIGIT ZERO vs LATIN SMALL LETTER N)

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Specs similar to a Cobra Mk III, but has 4 integral passenger berths built in. Specs similar to a Cobra Mk III, but has 4 integral passenger berths built in.
Identifier DTT.Snake Charmer 1.1.Paradox DTT.Snake Charmer 1.1.Paradox
Title DTT Snake Charmer DTT Snake Charmer
Category Ships Ships
Author Paradox Paradox
Version 1.1 1.1
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
Conflict Expansions
  • DTT.Snake Charmer Pinup 1.1.Paradox:0
  • DTT.Snake Charmer Pinup 1.1.Paradox:
  • Information URL http://wiki.alioth.net/index.php/D.T.T._Ship_Builders_Inc. n/a
    Download URL https://wiki.alioth.net/img_auth.php/7/7a/DTT_Snake_Charmer_1.1.oxz http://wiki.alioth.net/img_auth.php/7/7a/DTT_Snake_Charmer_1.1.oxz
    License CC-BY-NC-SA 3.0 CC-BY-NC-SA 3.0
    File Size n/a
    Upload date 1610873343

    Documentation

    Also read http://wiki.alioth.net/index.php/DTT%20Snake%20Charmer

    Read_Me_Please.txt

    D.T.T Shipbuilders introduces the D.T.T. Snake Charmer! 
    The Snake Charmer is meant to be an upgrade to the traditional Cobra Mk III. Like the Mk III she handles 25 tons of cargo, and she also has 4 structurally integral passenger berths! Yes sir folks, you heard me right! Four passenger berths and 25 tons of free cargo space! Try that in your Cobra Mk III! To make this possible however, the four berths are structurally integral to the ship, and cannot be removed. Further more, more berths cannot be added to this ship. Other ship systems have also been upgraded as listed below.
    In addition to the basic D.T.T. Snake Charmer, we are also excited to offer a special limited edition Snake Charmer Pinup model! In a tribute to those fighter planes of so very long ago, this special version of the Snake Charmer features a 1950's style mural painted on both sides of the hull by the universally renowned artist Paradox himself! That's right ladies and gentlemen, this limited edition features a sexy "Snake Charmer" pinup that you will find no where else in the universe! (pinup paint job will appear on player version of the ship only, npc versions will feature "normal" paint jobs.)
    Due to it's more "mature" nature, you may see the full size image by clicking on the picture below. 
    
    Length 110m
    Width 59m
    Height 30.5m
    	energy_recharge_rate = 2.5;
    	max_cargo = 45; (20 used by permanent passenger berths = 25 free)
    	max_energy = 175;
    	max_flight_pitch = 1.0;
    	max_flight_roll = 2.0;
    	max_flight_yaw = 1.0;
    	max_flight_speed = 325;
    	max_missiles = 6;
    	thrust = 35;
    
    	4 Structurally Integral Passenger Berths (cannot be removed)
    Price 175,000
    Tech lvl 7 and up.
    	
    To install, just unzip and place the .oxp folder into your AddOns folder.
    
    Released under Creative Commons Attribution-Non-Commercial-Share-Alike 3.0 license yada yada yada... I HIGHLY encourage you to change/modify this ship to meet your needs, I only ask that you give me credit for the original mesh/texture. Thanks and enjoy!
    
    Thanks to Smivs, Cim, and Nyarlatothep for developing the Berth Control scripts! They ROCK!
    
    Paradox 
    cyborspasm@gmail.com

    Equipment

    Name Visible Cost [deci-credits] Tech-Level
    Passenger Berth - takes up 5t of cargo space yes 8250 6+
    Remove Passenger Berth - reclaims 5t of cargo space yes 1000 2+

    Ships

    Name
    D.T.T. Snake Charmer
    dtt_snake_charmer_player

    Models

    This expansion declares no models. This may be related to warnings.

    Scripts

    Path
    Scripts/berthControl-conditions.js
    /*jslint white: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
    /*global missionVariables, player*/
    
    
    "use strict";
    
    
    this.name			= "berthControl-conditions";
    this.author			= "Nyarlatothep";
    this.copyright		= "This script is hereby placed in the public domain.";
    this.version		= "1.2";
    
    
    /* contexts: npc, purchase, scripted, newShip, (loading), (damage), (portable) */
    this.allowAwardEquipment = function(equipment, ship, context)
    {
    
    	// OXP hook to allow stations to forbid specific equipment
    	if (context == "purchase" && player.ship.dockedStation && player.ship.dockedStation.scriptInfo["oolite-barred-equipment"])
    	{
    		if (player.ship.dockedStation.scriptInfo["oolite-barred-equipment"].indexOf(equipment) != -1)
    		{
    			return false;
    		}
    	}
    
    	// fixed berthts?
    	var fixedBerths = ship.scriptInfo.fixedBerths;
    	if (context == "purchase" && (fixedBerths === "Yes" || fixedBerths === "Y"))
    	{
    		player.consoleMessage(missionVariables.berthControl_marketMessage, 1.5);
    		return false;
    	}
    	
    	if (context == "purchase" && equipment == "EQ_PASSENGER_BERTH_REMOVAL")
    	{
    		//var removableBerths = parseInt(missionVariables.berthControl_removableBerths);
    		if (missionVariables.berthControl_removableBerths === 0)
    		{
    			player.consoleMessage(missionVariables.berthControl_marketMessage, 1.5);
    			return false;
    		}
    	}
    
    
    	// otherwise allowed
    	return true;
    }
    
    Scripts/berthControl.js
    /*jslint white: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
    
    "use strict";
    
    // Standard attributes
    this.name           = "BerthControl";
    this.author         = "Smivs, Nyarlatothep";
    this.copyright      = "This script is hereby placed in the public domain.";
    this.version        = "1.2";
    this.description    = "Passenger berths management script.";
    
    
    this.playerBoughtNewShip = function(ship)
    // set removable berth count when ship is bought
    {
    	missionVariables.berthControl_removableBerths = null;
    	missionVariables.berthControl_marketMessage = null;
    	
    	var msg = "";
    	var berths = ship.passengerCapacity;  // !
    	var fixedBerths = ship.scriptInfo.fixedBerths;
    	// get bool value from string
    	fixedBerths = (fixedBerths === "Yes" || fixedBerths === "Y");
    	
    	if (fixedBerths)
    	{
    		msg = "This ship cannot be equipped with standard Passenger Berths.";
    	}
    	
    	var minBerths = parseInt(ship.scriptInfo.minBerths);
    	// ensure minBerth is a valid integer & it's > 0
    	if (fixedBerths || (!isNaN(minBerths) && minBerths > 0))
    	{
    		// no berths to start with? no need for minBerths!
    		if (berths > 0)
    		{
    			//  calculate the actual number of permanent berths
    			if (fixedBerths || minBerths > berths) minBerths = berths;
    			//  compose a nice formatted message...
    			msg = (minBerths ===  berths ? "The " + minBerths : minBerths + " of the" ) + " Passenger Berth" + (berths === 1 ? "" : "s");
    			msg += " that came with the ship cannot be " + (fixedBerths? "modified" : "removed") + " at this shipyard.";
    			// save the number of removable berths for later
    			missionVariables.berthControl_removableBerths =  berths - minBerths;
    		}
    	}
    	
    	if (msg !== "")
    	{
    		player.consoleMessage(msg, 5);
    		//  save a message for later
    		if (berths > 0 && minBerths > 0)
    		{
    			msg = minBerths + " Passenger Berths cannot be modified at this shipyard."
    		}
    		missionVariables.berthControl_marketMessage = msg;
    	}
    }
    
    this.playerBoughtEquipment = function(equipment)
    {
      if (missionVariables.berthControl_removableBerths === null)
    	{
    		// no berthControl mission variable? do nothing
    		return;
    	}
     
      if (equipment == "EQ_PASSENGER_BERTH")
        {
    		missionVariables.berthControl_removableBerths++;  // update counter
        }
    
      if (equipment == "EQ_PASSENGER_BERTH_REMOVAL")
        {
    		missionVariables.berthControl_removableBerths--;  // update counter
        }
    }